package com.dragon.repository.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.web.bind.annotation.RequestParam;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 审批操作表
 * </p>
 *
 * @author sy
 * @since 2023-07-06
 */
@Getter
@Setter
@TableName("dragon_examine")
public class Examine implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;


    /**
     * 流程标题
     */
    private String title;

    /**
     * 进行每个审核块分组
     */
//    private String auditOnly;

    /**
     * 流程类型
     */
    private Integer streamType;


    /**
     * 关联主表id
     */
    private Integer correlationId;

    /**
     * 审核状态：0,发起，1，待审核，2审核通过，3审核不通过
     */
    private Integer status;

    /**
     * 审核人id
     */
//    private Integer auditId;

    /**
     * 审核时间
     */
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
//    private Date auditTime;

    /**
     * 审核类型：1、依次顺序审核，2、会签（可同时审核），3、或签
     */
    private Integer auditType;

    /**
     * 申请人id
     */
    private Integer applicantId;

    /**
     * 审核描述
     */
//    private String reason;

    /**
     * 审核人名称
     */
    @TableField(exist = false)
    private String auditName;

    /**
     * 流程类型名称
     */
//    @TableField(exist = false)
//    private String dictsortName;

    /**
     * 申请人名称
     */
    @TableField(exist = false)
    private String applicantName;


    @TableField(exist = false)
    private Object detail;

    /**
     * 所有流程执行完都要抄送的人
     */
    private String toTotalAdmin;

    /**
     * 抄送是否可编辑，0否，1是
     */
    private Integer isUpdate;

    /**
     * 是否有抄送，0否，1是
     */
    private Integer isSend;

    /**
     * 审批类型 0：表单审核 1：申请修改
     */
    private Integer examineType;

    /**
     * 是否允许加签:0不允许，1允许
     */
    private Integer isAddSign;

    /**
     * 加签类型: 0，未加签，1，前加签，2、后加签
     */
    private Integer addSignType;

    /**
     * 加签的审核人id,方便排序操作
     */
    private Integer signUserId;


    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private  Date createTime;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private  Date updateTime;

    /**
     * 子表数据
     */
    @TableField(exist = false)
    private List<ExamineUser> examineUsers;

    /**
     * 子表id
     */
    @TableField(exist = false)
    private Integer examineUserId;

    /**
     * 子表的审核状态
     */
    @TableField(exist = false)
    private Integer examineStatus;

    /**
     * 子表的上次审核状态
     */
    @TableField(exist = false)
    private Integer examinePreStatus;

    /**
     * 子表审核意见
     */
    @TableField(exist = false)
    private String  opinion;

    /**
     * 审核附件数据
     */
    @TableField(exist = false)
    private List<ExamineFile> examineFiles;

    /**
     * 审核人id
     */
    @TableField(exist = false)
    private Integer examineAuditUserId;


    /**
     * 加签审核人集合
     */
    @TableField(exist = false)
    private String examineAuditUserIds;

    /**
     * 子表审核时间
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date examineAuditTime;

    /**
     * 总状态
     */
    @TableField(exist = false)
    private Integer totalStatus;

    /**
     * 部门id
     */
    @TableField(exist = false)
    private Integer departmentId;

}

